/**
 * Copyright (c) 2015-2018 iqiyi
 * All rights reserved.
 *
 * Author     : Wang Haibin
 * E-mail     : wanghaibin@qiyi.com
 * Version    :
 * Date       : Fri 07 Dec 2018 12:41:38 PM CST
 * Destription:
 *
 */
#pragma once

class SpeedInfo
{
public:
    SpeedInfo ();
    ~SpeedInfo ();

    /**
     * 开始计时
     */
    void Start();

    //结束计时
    void End();

    /**
     * DNS解析结束
     */
    void FinishDNS();

    /**
     * connect连接结束
     */
    void FinishConnect();

    /**
     * 数据接收结束
     */
    void FinishData();

    /**
     * 首包时间
     */
    void FinishFirstByte();

    /**
     * 收个数据接收时间
     */
    void FinishFirstData();

    /**
     * 设置读取的数据长度
     */
    void SetReadCount(long long len);
private:
    SpeedInfo(const SpeedInfo & info);
    SpeedInfo & operator=(const SpeedInfo & info);
private:
    long long GetNowUs();
private:
    long long start_;                //开始时间
    long long end_;                  //结束时间
    long long dnsTime_;              //dns解析时间
    long long connTime_;             //连接时间
    long long firstDataTime_;        //收个数据内容到达时间
    long long firstByteTime_;        //服务端发送的首包时间
    long long finDataTime_;          //所有数据接收结束时间
    long long dataLen_;              //数据长度
};
